
#ifndef _244_FINAL_PROJECT_PRESENTATION_H_
#define _244_FINAL_PROJECT_PRESENTATION_H_

#include <string>
#include "Util.h"
#include "Date.h"

using std::string;


class Presentation;
class PresentationList;


//Only one Presentation should be loaded at a time, to prevent redundancy
class Presentation : public OrderedDataSet<Song*> {
private:
    typedef OrderedDataSet<Song*> Base;

    SQLHDBC hdbc;
    
    string title;
    string author;
    Date createdFor;
    Date lastRun;
    string comment;

    const SongList *song_list;
    
public:
    //queries database to pull other Presentation data
    Presentation(SQLHDBC hdbc_, const SongList *song_list_, 
            const std::string &title_, const std::string &author_);
    ~Presentation();

    //populates list of Song*`s by finding them in song_list
    void load();
    void clear();

    
};

class PresentationList : public DataSet<Presentation*> {
private:
    typedef DataSet<Presentation*> Base;

    const SongList *song_list;
    
public:
    PresentationList(const SongList *song_list_);
    ~PresentationList();
};


#endif // inclusion guard

